package com.one.shopping.util;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 柯尊诚
 * @version 1.0
 * @date 创建时间：2016/1/9 11:08
 */
public class GsonUtils {

    public static Gson gson = new Gson();

    /**
     * 将任一Java对象转换为Json字符串
     * @param obj
     * @return 代表对象内容的Json字符串
     */
    public static String toJson(Object obj){
        return gson.toJson(obj);
    }

    /**
     * 将Json字符串转换为具体T类型的对象,比如T为User,则clazz参数为User.class
     * @param json
     * @param clazz
     * @return Json字符串对应的对象
     */
    public static <T> T fromJson(String json, Class<T> clazz){
        return gson.fromJson(json, clazz);
    }


    /**
     * 将Json字符串转换为T类型的数组,比如T为User,则clazz参数为User.class
     * @param json
     * @param clazz
     * @return
     */
    public static <T> List<T> json2List(String json, Class<T> clazz){
        List<T> list = new ArrayList<T>();
        JsonArray array = new JsonParser().parse(json).getAsJsonArray();
        for (final JsonElement element : array) {
            list.add(new Gson().fromJson(element, clazz));
        }
        return list;
    }
}
